﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Aeroporto.modelo;
using Aeroporto.bd;
using Aeroporto.controle;
using System.Collections;
using Aeroporto.visão;
using Aeroporto.visao;

namespace Aeroporto.visão
{
    public partial class formCadastroAssento : Form
    {

        private AssentoControl assento_control = new AssentoControl();        

        public formCadastroAssento(string codigo)
        {            
            InitializeComponent();
            this.txtCodAeronave.Text = codigo;
        }

        private void formCadastroAssento_Load(object sender, EventArgs e)
        {
            lista_dados();
            //limpar();
        }


        private void atualiza_campos()
        {
            int linha = grid_assentos.CurrentRow.Index;

            txtFila.Text = grid_assentos[0, linha].Value.ToString();
            txtNumero.Text = grid_assentos[1, linha].Value.ToString();
            txtCodAeronave.Text = grid_assentos[2, linha].Value.ToString();
            txtClasse.Text = grid_assentos[3, linha].Value.ToString();
        }

        private void lista_dados()
        {
            try
            {
                grid_assentos.DataSource = assento_control.lista_dados("assento","cod_aeronave",txtCodAeronave.Text);

                grid_assentos.Columns["fila"].HeaderText = "Fila";
                grid_assentos.Columns["numero"].HeaderText = "Numero";
                grid_assentos.Columns["cod_aeronave"].HeaderText = "Codigo Aeronave";
                grid_assentos.Columns["classe"].HeaderText = "Classe";
                atualiza_campos();
                grid_assentos.ReadOnly = true;
            }
            catch(Exception e){
                MessageBox.Show("Erro na listagem do assento :"+ e.ToString());
            }
        }

        private void grid_assentos_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
           // atualiza_campos();
        }

        private void btnInserirAssento_Click(object sender, EventArgs e)
        {
            string cod_aeronave = txtCodAeronave.Text;

            string codigo = assento_control.valida_codAeronave(cod_aeronave);
            //int numero = Convert.ToInt32(txtNumero.Text);
            
            if(codigo != null){
                MyMessageBox message_box = assento_control.valida_insert_assento(txtFila.Text,txtNumero.Text,txtCodAeronave.Text,txtClasse.Text);

                MessageBox.Show(message_box.String1,message_box.String2);

                switch(message_box.String2){
                    case "Assento ja cadastrado":
                        txtCodAeronave.Focus();
                        break;

                    case "Cadastro":
                        limpar();
                        atualiza_campos();
                        lista_dados();
                        break;
                }
            }
            else{
                MessageBox.Show("Não existe essa aeronave","Erro");
            }
        }

        private void limpar()
        {
            txtClasse.Text = "";
            txtCodAeronave.Text = "";
            txtFila.Text = "";
            txtNumero.Text = "";
        }

        private void btnPesquisar_Click(object sender, EventArgs e)
        {
            grid_assentos.DataSource = assento_control.pesquisar_codigo(txtPesquisa.Text);
        }

        private void btnEditarAssento_Click(object sender, EventArgs e)
        {
            string fila_antiga = grid_assentos[0, grid_assentos.CurrentCell.RowIndex].Value.ToString();
            string numero = grid_assentos[1, grid_assentos.CurrentCell.RowIndex].Value.ToString();
            int numeroAntigo1 = Convert.ToInt32(numero);
            string codAntigo1 = grid_assentos[2, grid_assentos.CurrentCell.RowIndex].Value.ToString();
            //int txtNumero1 = Convert.ToInt32(txtNumero.Text);

            MyMessageBox mb = assento_control.valida_update_assento(txtFila.Text,txtNumero.Text,txtCodAeronave.Text,txtClasse.Text,fila_antiga,numeroAntigo1,codAntigo1);

            MessageBox.Show(mb.String1,mb.String2);

            lista_dados();
        }

        private void btnDeletarAssento_Click(object sender, EventArgs e)
        {
            if (txtCodAeronave.Text == "" || txtFila.Text == "" || txtNumero.Text == "")
            {
                MessageBox.Show("Escolha um assento na tabela", "Assento");
            }
            else
            {
                if(MessageBox.Show("Deseja mesmo excluir?","Aeronave",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)== DialogResult.OK){
                    MyMessageBox message_box = assento_control.exclui_assento(txtFila.Text,Convert.ToInt32(txtNumero.Text),txtCodAeronave.Text);
                    MessageBox.Show(message_box.String1,message_box.String2);
                    lista_dados();
                }
            }
        }

        private void grid_assentos_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            atualiza_campos();
        }

        private void btnLimpar_Click(object sender, EventArgs e)
        {
            limpar();
        }
        
    }
}
